/**
 * 
 */
package fr.toussna.entity;

import java.util.List;

/**
 * <b>Cette classe représente le membre de site Toussna</b>.Elle hérite de la
 * classe @see {@link DomainEntity}
 * <p>
 * Le membre possède un compte sur le site web, il se connecte avec son email
 * comme login et avec un mot de passe choisi.
 * </p>
 * 
 * @author My
 * @version 2.0
 * 
 */
public class Member extends DomainEntity {

	/**
	 * Id serialisation
	 */
	private static final long serialVersionUID = 8734873587481L;

	// **********************************
	// * Attributs *
	// **********************************
	/**
	 * L'email du membre, il sert aussi comme login
	 * 
	 * @see Member#setEmail(String)
	 */
	private String email;

	/**
	 * le mot de passe du membre
	 * 
	 * @see Member#setPassword(String)
	 */
	private String password;

	/**
	 * La civilité du membre (Mrs,Mme...)
	 * 
	 * @see Member#setCivility(String)
	 */
	private String civility;

	/**
	 * Le nom du membre
	 * 
	 * @see Member#setName(String)
	 */
	private String name;

	/**
	 * Le nom de famille du membre
	 * 
	 * @see Member#setFirstName(String)
	 */
	private String firstName;

	/**
	 * La date de naissance du membre
	 * 
	 * @see Member#setBirthDay(String)
	 */
	private String birthDay;

	/**
	 * L'adresse postale du membre
	 * 
	 * @see Member#setAddress(String)
	 */
	private String address;

	/**
	 * La photo pour l'espace du membre
	 * 
	 * @see Member#setPhoto(Object)
	 */
	private Object photo;
	
	/**
	 * La liste des articles de ce membre
	 * @see Member#setArticles(List<Article>)
	 */
	private List<Article> articles;

	// **********************************
	// * Constructeurs *
	// **********************************

	public Member(String _email, String _pwd, String _name) {
		this.email = _email;
		this.password = _pwd;
		this.name = _name;
	}

	public Member(String _email, String _pwd, String _civility, String _name,
			String _firstName, String _birthDate, String _address, Object _photo) {
		this(_email,_pwd,_name);
		this.civility = _civility;
		this.firstName = _firstName;
		this.birthDay = _birthDate;
		this.address = _address;
		this.photo = _photo;
	}
	
	public Member(long int1) {
		super(int1);
	}
	
	/**
     * 
     */
    public Member() {
	    // TODO Auto-generated constructor stub
    }
	
	// **********************************
	// * Methodes *
	// **********************************
	
	

	

    public Member(String email2, String password2) {
		this.email = email2;
		this.password = password2;
	}

	/**
	 * Cette méthode résume les champs du membre dans une chaine de caractères.
	 * @return Le membre en littéral.
	 */
	public String toString(){
		StringBuffer bf = new StringBuffer();
		bf.append("Member Informations \n");
		bf.append("  Email: "+this.getEmail()+"\n");
		bf.append("  Civility: "+this.getCivility()+"\n");
		bf.append("  Name: "+this.getName()+"\n");
		bf.append("  First name: "+this.getFirstName()+"\n");
		bf.append("  Birth date: "+this.getBirthDay()+"\n");
		bf.append("  Address: "+this.getAddress()+"\n");
		//bf.append("  Articles : "+this.getArticles().toString());
		return bf.toString();
	}
	// **********************************
	// * Getters & Setters *
	// **********************************
	
	/**
	 * @return l'email
	 */
	public String getEmail() {
		return email;
	}

	/**
	 * @return la liste des article de ce membre
	 */
	public List<Article> getArticles() {
		return articles;
	}

	/**
	 * @param articles 
	 * 				la liste des articles a setter
	 */
	public void setArticles(List<Article> articles) {
		this.articles = articles;
	}

	/**
	 * @param email
	 *            l'email a setter
	 */
	public void setEmail(String email) {
		this.email = email;
	}

	/**
	 * @return Le mot de passe
	 */
	public String getPassword() {
		return password;
	}

	/**
	 * @param password
	 *            Le mot de passe a setter
	 */
	public void setPassword(String password) {
		this.password = password;
	}

	/**
	 * @return La civilité
	 */
	public String getCivility() {
		return civility;
	}

	/**
	 * @param civility
	 *            La civilité a setter
	 */
	public void setCivility(String civility) {
		this.civility = civility;
	}

	/**
	 * @return Le nom
	 */
	public String getName() {
		return name;
	}

	/**
	 * @param name
	 *           Le nom a setter
	 */
	public void setName(String name) {
		this.name = name;
	}

	/**
	 * @return Le nom de famille
	 */
	public String getFirstName() {
		return firstName;
	}

	/**
	 * @param firstName
	 *            Le nom de famille a setter
	 */
	public void setFirstName(String firstName) {
		this.firstName = firstName;
	}

	/**
	 * @return La date de naissance
	 */
	public String getBirthDay() {
		return birthDay;
	}

	/**
	 * @param birthDay
	 *            La date de naissance
	 */
	public void setBirthDay(String birthDay) {
		this.birthDay = birthDay;
	}

	/**
	 * @return l'adresse
	 */
	public String getAddress() {
		return address;
	}

	/**
	 * @param address
	 *            l'adresse a setter
	 */
	public void setAddress(String address) {
		this.address = address;
	}

	/**
	 * @return La photo
	 */
	public Object getPhoto() {
		return photo;
	}

	/**
	 * @param photo
	 *            La photo a setter
	 */
	public void setPhoto(Object photo) {
		this.photo = photo;
	}

}
